home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / libs / tsipp / tsipp.lha / tsipp3.0a / tests / bezier.test < prev    next >
Encoding:
Text File  |  1992-11-02  |  9.9 KB  |  295 lines

  1. #==============================================================================
  2. #                                bezier.test
  3. #------------------------------------------------------------------------------
  4. # Test of the Tcl SIPP Bezier commands.
  5. #------------------------------------------------------------------------------
  6. # Copyright 1992 Mark Diekhans
  7. # Permission to use, copy, modify, and distribute this software and its
  8. # documentation for any purpose and without fee is hereby granted, provided
  9. # that the above copyright notice appear in all copies.  Mark Diekhans makes
  10. # no representations about the suitability of this software for any purpose.
  11. # It is provided "as is" without express or implied warranty.
  12. #------------------------------------------------------------------------------
  13. # $Id: bezier.test,v 2.0 1992/11/02 03:55:50 markd Rel $
  14. #==============================================================================
  15.  
  16.  
  17. if {[info procs test] == ""} {source testprocs.tcl}
  18.  
  19. set teapotBodyVertices {
  20.     {3.500000E-01    5.625000E-01    0.000000E+00}
  21.     {3.343750E-01    5.953125E-01    0.000000E+00}
  22.     {3.593750E-01    5.953125E-01    0.000000E+00}
  23.     {3.750000E-01    5.625000E-01    0.000000E+00}
  24.     {4.375000E-01    4.312500E-01    0.000000E+00}
  25.     {5.000000E-01    3.000000E-01    0.000000E+00}
  26.     {5.000000E-01    1.875000E-01    0.000000E+00}
  27.     {5.000000E-01    7.500000E-02    0.000000E+00}
  28.     {3.750000E-01    1.875000E-02    0.000000E+00}
  29.     {3.750000E-01    0.000000E+00    0.000000E+00}}
  30. set teapotBodyCurves {
  31.     {0 1 2 3}
  32.     {4 4 5 7}
  33.     {6 7 8 9}}
  34. set teapotHandleVertices {
  35.     {-3.750000E-01    5.250000E-01    0.000000E+00}
  36.     {-6.250000E-01    5.250000E-01    0.000000E+00}
  37.     {-7.500000E-01    5.250000E-01    0.000000E+00}
  38.     {-7.500000E-01    4.125000E-01    0.000000E+00}
  39.     {-7.500000E-01    3.000000E-01    0.000000E+00}
  40.     {-6.625000E-01    1.968750E-01    0.000000E+00}
  41.     {-4.750000E-01    1.125000E-01    0.000000E+00}
  42.     {-3.750000E-01    5.250000E-01   -7.500000E-02}
  43.     {-6.250000E-01    5.250000E-01   -7.500000E-02}
  44.     {-7.500000E-01    5.250000E-01   -7.500000E-02}
  45.     {-7.500000E-01    4.125000E-01   -7.500000E-02}
  46.     {-7.500000E-01    3.000000E-01   -7.500000E-02}
  47.     {-6.625000E-01    1.968750E-01   -7.500000E-02}
  48.     {-4.750000E-01    1.125000E-01   -7.500000E-02}
  49.     {-4.000000E-01    4.687500E-01   -7.500000E-02}
  50.     {-5.750000E-01    4.687500E-01   -7.500000E-02}
  51.     {-6.750000E-01    4.687500E-01   -7.500000E-02}
  52.     {-6.750000E-01    4.125000E-01   -7.500000E-02}
  53.     {-6.750000E-01    3.562500E-01   -7.500000E-02}
  54.     {-6.250000E-01    2.437500E-01   -7.500000E-02}
  55.     {-5.000000E-01    1.875000E-01   -7.500000E-02}
  56.     {-4.000000E-01    4.687500E-01    0.000000E+00}
  57.     {-5.750000E-01    4.687500E-01    0.000000E+00}
  58.     {-6.750000E-01    4.687500E-01    0.000000E+00}
  59.     {-6.750000E-01    4.125000E-01    0.000000E+00}
  60.     {-6.750000E-01    3.562500E-01    0.000000E+00}
  61.     {-6.250000E-01    2.437500E-01    0.000000E+00}
  62.     {-5.000000E-01    1.875000E-01    0.000000E+00}
  63.     {-4.000000E-01    4.687500E-01    7.500000E-02}
  64.     {-5.750000E-01    4.687500E-01    7.500000E-02}
  65.     {-6.750000E-01    4.687500E-01    7.500000E-02}
  66.     {-6.750000E-01    4.125000E-01    7.500000E-02}
  67.     {-6.750000E-01    3.562500E-01    7.500000E-02}
  68.     {-6.250000E-01    2.437500E-01    7.500000E-02}
  69.     {-5.000000E-01    1.875000E-01    7.500000E-02}
  70.     {-3.750000E-01    5.250000E-01    7.500000E-02}
  71.     {-6.250000E-01    5.250000E-01    7.500000E-02}
  72.     {-7.500000E-01    5.250000E-01    7.500000E-02}
  73.     {-7.500000E-01    4.125000E-01    7.500000E-02}
  74.     {-7.500000E-01    3.000000E-01    7.500000E-02}
  75.     {-6.625000E-01    1.968750E-01    7.500000E-02}
  76.     {-4.750000E-01    1.125000E-01    7.500000E-02}}
  77.  
  78. set teapotHandlePatches {
  79.     {{ 0  1  2  3} {35 36 37 38} {28 29 30 31} {21 22 23 24}}
  80.     {{21 22 23 24} {14 15 16 17} { 7  8  9 10} { 0  1  2  3}}
  81.     {{ 3  4  5  6} {38 39 40 41} {31 32 33 34} {24 25 26 27}}
  82.     {{ 6  5  4  3} {13 12 11 10} {20 19 18 17} {27 26 25 24}}}
  83.  
  84. #
  85. # Set up for tests.
  86. #
  87.  
  88. test {bezier-1.1} {
  89.     set shader1 [SippShaderBasic .6 .1 .4 {.8 .5 .2}]
  90.     crange $shader1 0 5
  91. } 0 {shader}
  92.  
  93. #
  94. # Test SippBezierCurve command.
  95. #
  96.  
  97. test {bezier-2.1} {
  98.     SippBezierCurve foo
  99. } 1 {wrong # args: SippBezierCurve resolution vertexlist curvelist shaderhandle [texture]}
  100.  
  101. test {bezier-2.2} {
  102.     SippBezierCurve 2 $teapotBodyVertices $teapotBodyCurves $shader1 foo baz
  103. } 1 {wrong # args: SippBezierCurve resolution vertexlist curvelist shaderhandle [texture]}
  104.  
  105. test {bezier-2.3} {
  106.     SippBezierCurve 2 $teapotBodyVertices $teapotBodyCurves $shader1 foo
  107. } 1 {expected one of "NATURAL", "CYLINDRICAL", "SPHERICAL", or "WORLD", got "foo"}
  108.  
  109. test {bezier-2.4} {
  110.     SippBezierCurve 2 $teapotBodyVertices $teapotBodyCurves $shader1 CYLINDRICAL
  111. } 1 {texture mapping CYLINDRICAL is not valid for this command}
  112.  
  113. test {bezier-2.5} {
  114.     SippBezierCurve 10 {1 2 3} $teapotBodyCurves $shader1
  115. } 1 {vertex or vector must be a list of three elements}
  116.  
  117. test {bezier-2.6} {
  118.     SippBezierCurve 10 $teapotBodyVertices {1 2 3}  $shader1
  119. } 1 {list of vertex indices must have 4 indices}
  120.  
  121. test {bezier-2.7} {
  122.     SippBezierCurve aa $teapotBodyVertices $teapotBodyCurves $shader1
  123. } 1 {expected unsigned integer but got "aa"}
  124.  
  125. test {bezier-2.8} {
  126.     SippBezierCurve 10 $teapotBodyVertices \
  127.                     {{0 1 2  3}
  128.                      {4 4 5  7}
  129.                      {6 7 8 10}}  $shader1
  130. } 1 {vertex index 10 out of range, expect: 0 .. 9}
  131.  
  132. test {bezier-2.9} {
  133.     catch {unset curve}
  134.     set curve [SippBezierCurve 2 $teapotBodyVertices $teapotBodyCurves \
  135.                               $shader1]
  136.     SippObjectDelete $curve
  137.     crange $curve 0 5
  138. } 0 {object}
  139.  
  140. test {bezier-2.10} {
  141.     catch {unset curve}
  142.     set curve [SippBezierCurve 2 $teapotBodyVertices $teapotBodyCurves \
  143.                                $shader1]
  144.     SippObjectDelete $curve
  145.     crange $curve 0 5
  146. } 0 {object}
  147.  
  148. test {bezier-2.11} {
  149.     catch {unset curve}
  150.     set curve [SippBezierCurve 2 $teapotBodyVertices $teapotBodyCurves \
  151.                                $shader1 WORLD]
  152.     SippObjectDelete $curve
  153.     crange $curve 0 5
  154. } 0 {object}
  155.  
  156. test {bezier-2.12} {
  157.     catch {unset curve}
  158.     set curve [SippBezierCurve 2 $teapotBodyVertices $teapotBodyCurves \
  159.                                $shader1 NATURAL]
  160.     SippObjectDelete $curve
  161.     crange $curve 0 5
  162. } 0 {object}
  163.  
  164. #
  165. # Test SippBezierPatch commnand
  166. #
  167.  
  168. test {bezier-3.1} {
  169.     SippBezierPatch foo
  170. } 1 {wrong # args: SippBezierPatch resolution vertexlist patchlist shaderhandle [texture]}
  171.  
  172. test {bezier-3.2} {
  173.     SippBezierPatch 2 $teapotHandleVertices $teapotHandlePatches $shader1 foo baz
  174. } 1 {wrong # args: SippBezierPatch resolution vertexlist patchlist shaderhandle [texture]}
  175.  
  176. test {bezier-3.3} {
  177.     SippBezierPatch 2 $teapotHandleVertices $teapotHandlePatches $shader1 foo
  178. } 1 {expected one of "NATURAL", "CYLINDRICAL", "SPHERICAL", or "WORLD", got "foo"}
  179.  
  180. test {bezier-3.4} {
  181.     SippBezierPatch 2 $teapotHandleVertices $teapotHandlePatches $shader1 CYLINDRICAL
  182. } 1 {texture mapping CYLINDRICAL is not valid for this command}
  183.  
  184. test {bezier-3.5} {
  185.     SippBezierPatch 10 {1 2 3} $teapotHandlePatches $shader1
  186. } 1 {vertex or vector must be a list of three elements}
  187.  
  188. test {bezier-3.6} {
  189.     SippBezierPatch 10 $teapotHandleVertices {1 2 3} $shader1
  190. } 1 {matrix of vertex indices must have 4 list of vertex indices}
  191.  
  192. test {bezier-3.7} {
  193.     SippBezierPatch aa $teapotHandleVertices $teapotHandlePatches $shader1
  194. } 1 {expected unsigned integer but got "aa"}
  195.  
  196. test {bezier-3.8} {
  197.     SippBezierPatch 10 $teapotHandleVertices \
  198.       {{{ 0  1  2  3} {35 36 37 38} {28 29 30 31} {21 22 23 42}}}  $shader1
  199. } 1 {vertex index 42 out of range, expect: 0 .. 41}
  200.  
  201. test {bezier-3.9} {
  202.     catch {unset patch}
  203.     set patch [SippBezierPatch 2 $teapotHandleVertices $teapotHandlePatches \
  204.                                $shader1]
  205.     SippObjectDelete $patch
  206.     crange $patch 0 5
  207. } 0 {object}
  208.  
  209. test {bezier-3.10} {
  210.     catch {unset patch}
  211.     set patch [SippBezierPatch 2 $teapotHandleVertices $teapotHandlePatches \
  212.                                $shader1 WORLD]
  213.     SippObjectDelete $patch
  214.     crange $patch 0 5
  215. } 0 {object}
  216.  
  217. test {bezier-3.11} {
  218.     catch {unset patch}
  219.     set patch [SippBezierPatch 2 $teapotHandleVertices $teapotHandlePatches \
  220.                                $shader1 NATURAL]
  221.     SippObjectDelete $patch
  222.     crange $patch 0 5
  223. } 0 {object}
  224.  
  225. #
  226. # Test SippBezierFile command.
  227. #
  228.  
  229. test {bezier-4.1} {
  230.     SippBezierFile
  231. } 1 {wrong # args: SippBezierFile fileid resolution shaderhandle [texture]}
  232.  
  233. test {bezier-4.2} {
  234.     SippBezierFile stdout 5 $shader1 xxxn foo
  235. } 1 {wrong # args: SippBezierFile fileid resolution shaderhandle [texture]}
  236.  
  237. test {bezier-4.3} {
  238.     SippBezierFile stdout 5 $shader1 foo
  239. } 1 {expected one of "NATURAL", "CYLINDRICAL", "SPHERICAL", or "WORLD", got "foo"}
  240.  
  241. test {bezier-4.4} {
  242.     SippBezierFile stdout 5 $shader1 CYLINDRICAL
  243. } 1 {texture mapping CYLINDRICAL is not valid for this command}
  244.  
  245. test {bezier-4.5} {
  246.     SippBezierFile stdout 5 xxx
  247. } 1 {invalid shader handle: xxx}
  248.  
  249. test {bezier-4.6} {
  250.     SippBezierFile BADID 5 $shader1
  251. } 1 {bad file identifier "BADID"}
  252.  
  253. test {bezier-4.7} {
  254.     set fileHdl [open tpt_handle.bez r]
  255.     SippBezierFile $fileHdl nnn $shader1
  256.     close $fileHdl
  257. } 1 {expected unsigned integer but got "nnn"}
  258.  
  259. test {bezier-4.8} {
  260.     catch {unset bezier}
  261.     set fileHdl [open tpt_handle.bez r]
  262.     set bezier [SippBezierFile $fileHdl 5 $shader1]
  263.     close $fileHdl
  264.     SippObjectDelete $bezier
  265.     crange $bezier 0 5
  266. } 0 {object}
  267.     
  268. test {bezier-4.9} {
  269.     catch {unset bezier}
  270.     set fileHdl [open tpt_handle.bez r]
  271.     set bezier [SippBezierFile $fileHdl 5 $shader1 WORLD]
  272.     close $fileHdl
  273.     SippObjectDelete $bezier
  274.     crange $bezier 0 5
  275. } 0 {object}
  276.     
  277. test {bezier-4.10} {
  278.     catch {unset bezier}
  279.     set fileHdl [open tpt_handle.bez r]
  280.     set bezier [SippBezierFile $fileHdl 5 $shader1 NATURAL]
  281.     close $fileHdl
  282.     SippObjectDelete $bezier
  283.     crange $bezier 0 5
  284. } 0 {object}
  285.     
  286. #
  287. # Cleanup.
  288. #
  289.  
  290. test {bezier-5.1} {
  291.     SippShaderDelete $shader1
  292. } 0 {}
  293.  
  294.  
  295.